package cn.learn.designpattern.command;

/**
 * 命令的实际执行者
 *
 *
 * @author huangyezhan
 * @date 2019年02月24日12:54
 */
public class Light {

    public void on() {
        System.out.println("开灯");
    }

    public void off() {
        System.out.println("关灯");
    }
}

/**
 * 命令执行者,执行具体的命令
 */
class LightOnCommand implements Command {

    private final Light light;

    public LightOnCommand(Light light) {
        this.light = light;
    }

    @Override
    public void execute() {
        light.on();
    }
}

/**
 * 命令的请求者，是命令模式中最重要的角色。这个角色用来对各个命令进行控制。
 */
class SimpleRemoteControl {
    private Command slot;

    public void setCommand(Command command) {
        this.slot = command;
    }

    public void buttonWasPressed() {
        slot.execute();
    }

}


